A Practical Introduction for Experimental Researchers
University of Miami
December 9, 2025
Measure variables → examine covariation across people
Embrace variability between individuals as meaningful
Focus on relationships between constructs
Eliminate variability within individual
Experimental
Variability within individuals = Signal
Variability between individuals = Noise
Focus: Mean differences
Question: Does x cause y?
Individual Differences
Variability within individuals = Noise
Variability between individuals = Signal
Focus: Correlations / Covariance
Question: Who differs and why?
Mean differences tell us whether an effect exists, individual differences tells us for who and why
Visual working memory capacity is measured with change-detection “visual arrays” tasks
Behavioral and neural evidence from this task suggests that the capacity-limit of visual working memory is about 3-4 items
Visual working memory capacity is measured with change-detection “visual arrays” tasks
Behavioral and neural evidence from this task suggests that the capacity-limit of visual working memory is about 3-4 items
However, there is considerable individual variability on capacity limit estimates (k)
High and low capacity individuals show systematic differences on behavioral and neural indices of capacity when the set-size exceeds their capacity limitations
This has been interpreted as differences in the ability to selectively filter out irrelevant information
Therefore, capacity limitations may reflect attention processes and not just storage limitations
Individual differences research relies on the use of multiple measures to get at the constructs of interest.
Task impurity: individual task performance will be due to construct of interest, task-specific variance, construct unrelated variance, and error variance.
Individual differences research relies on the use of multiple measures to get at the constructs of interest.
Task impurity: individual task performance will be due to construct of interest, task-specific variance, construct unrelated variance, and error variance.
Latent constructs: common variance across a set of measures
Latent variables are hypothetical constructs that we think our tests measure
Observed Variables
In your dataset, the scores on the tests you gave participants
Observed variables are indirect measures of theoretical constructs
Observed variables are also called “indicators” or “manifest variables”
Latent Variablse
Unobserved, hypothetical constructs in their “purest form”
Latent variables are not measured directly, but via observed variables
Latent variables are also known as “latent factors”
Benefits
Draw conclusions about constructs and not tasks
Test models / theories and assess fit of model to data
Flexible and can handle complex models and data
Can handle missing data
Can constrain parameters
Robust estimation methods for non-normal data
Mediation, latent growth curve, multi-level, and longitudinal modeling
Cons
Need a large sample size (200+)
Need multiple indicators for each construct (3+)
Researcher ‘degrees of freedom’ can be overwhelming
Assessing model fit and mispecification can be complicated
Use multiple tasks to measure a single ability
Avoid difference scores
Consider and assess for reliability
Continuous vs. extreme-group designs
Restriction of range
Sample size
High and low capacity individuals show systematic differences on behavioral and neural indices of capacity when the set-size exceeds their capacity limitations
This has been interpreted as differences in the ability to selectively filter out irrelevant information
Therefore, capacity limitations may reflect attention processes and not just storage limitations
Data Set 3 (N = 568)
Performance on change-detection visual arrays tasks are interpreted as reflecting the limited-capacity storage and maintenance of visual information in working memory. However, there is evidence to suggest that visual arrays task performance reflects individual differences in attention control processes. The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance vs. attention control processes.
Working memory capacity: Operation span, Symmetry Span, Rotation Span, Running Spatial Span, Running Digit Span
Attention control: Antisaccade, Flanker, Stroop
Data Set 3 (N = 568)
Data quality check
Correlation matrix
Exporatory factor analysis
Confirmatory factor analysis
Theory-driven approach to test how well our model/factor structure fits the data
Assess the correlations between latent factors
Structural equation modeling
Data quality check
Correlation matrix
Exporatory factor analysis
Confirmatory factor analysis
Theory-driven approach to test how well our model/factor structure fits the data
Assess the correlations between latent factors
Structural equation modeling
| Descriptive Statistics | |||||||
| Variable | n | Mean | SD | Range | Skewness | Kurtosis | % Missing |
|---|---|---|---|---|---|---|---|
| OSpan | 564 | 54.440 | 15.338 | 3.000 — 75.000 | −0.878 | 0.145 | 0.704 |
| SymSpan | 565 | 26.644 | 9.056 | 3.000 — 42.000 | −0.417 | −0.502 | 0.528 |
| RotSpan | 565 | 24.664 | 9.805 | 0.000 — 42.000 | −0.448 | −0.577 | 0.528 |
| RunSpatial | 567 | 24.577 | 11.288 | 1.000 — 49.000 | −0.310 | −0.798 | 0.176 |
| RunDigit | 561 | 56.624 | 19.360 | 0.000 — 107.000 | −0.458 | 0.225 | 1.232 |
| Antisaccade | 566 | 0.556 | 0.163 | 0.200 — 0.983 | 0.116 | −0.793 | 0.352 |
| Flanker | 561 | 98.460 | 44.322 | −49.966 — 251.245 | 0.629 | 1.081 | 1.232 |
| Stroop | 567 | 131.552 | 98.160 | −152.632 — 476.290 | 0.670 | 0.933 | 0.176 |
| VAorient_k | 568 | 2.747 | 1.492 | −2.467 — 5.767 | −0.490 | −0.126 | 0.000 |
| VAorient_S_k | 568 | 1.586 | 1.298 | −1.675 — 5.000 | 0.101 | −0.471 | 0.000 |
| Total N = 568 | |||||||
Standard guidelines:
| OSpan | SymSpan | RotSpan | RunSpatial | RunDigit | Antisaccade | Flanker | Stroop | VAorient_k | VAorient_S_k | |
| OSpan | 0.542 | 0.528 | 0.529 | 0.521 | 0.378 | -0.114 | -0.303 | 0.363 | 0.432 | |
| SymSpan | 0.542 | 0.683 | 0.615 | 0.435 | 0.446 | -0.148 | -0.185 | 0.462 | 0.512 | |
| RotSpan | 0.528 | 0.683 | 0.603 | 0.489 | 0.440 | -0.165 | -0.180 | 0.432 | 0.504 | |
| RunSpatial | 0.529 | 0.615 | 0.603 | 0.558 | 0.480 | -0.223 | -0.240 | 0.553 | 0.584 | |
| RunDigit | 0.521 | 0.435 | 0.489 | 0.558 | 0.405 | -0.144 | -0.233 | 0.352 | 0.471 | |
| Antisaccade | 0.378 | 0.446 | 0.440 | 0.480 | 0.405 | -0.194 | -0.221 | 0.383 | 0.497 | |
| Flanker | -0.114 | -0.148 | -0.165 | -0.223 | -0.144 | -0.194 | 0.093 | -0.183 | -0.160 | |
| Stroop | -0.303 | -0.185 | -0.180 | -0.240 | -0.233 | -0.221 | 0.093 | -0.170 | -0.206 | |
| VAorient_k | 0.363 | 0.462 | 0.432 | 0.553 | 0.352 | 0.383 | -0.183 | -0.170 | 0.577 | |
| VAorient_S_k | 0.432 | 0.512 | 0.504 | 0.584 | 0.471 | 0.497 | -0.160 | -0.206 | 0.577 | |
| Computed correlation used pearson-method with pairwise-deletion. | ||||||||||
What to look for:
Convergent validity: Stronger correlations between tasks within a construct
Discriminate validity: Weaker correlations between tasks across constructs
Multicolinearity: Too high of correlations, r > .85
Weak correlations
| OSpan | SymSpan | RotSpan | RunSpatial | RunDigit | Antisaccade | Flanker | Stroop | VAorient_k | VAorient_S_k | |
|---|---|---|---|---|---|---|---|---|---|---|
| OSpan | 235.263 | 75.042 | 78.716 | 91.570 | 154.288 | 0.940 | −77.752 | −453.431 | 8.278 | 8.608 |
| SymSpan | 75.042 | 82.010 | 60.840 | 62.972 | 76.208 | 0.658 | −59.711 | −164.515 | 6.248 | 6.034 |
| RotSpan | 78.716 | 60.840 | 96.142 | 66.639 | 92.675 | 0.703 | −71.974 | −173.089 | 6.308 | 6.398 |
| RunSpatial | 91.570 | 62.972 | 66.639 | 127.428 | 121.168 | 0.883 | −111.187 | −265.489 | 9.318 | 8.560 |
| RunDigit | 154.288 | 76.208 | 92.675 | 121.168 | 374.828 | 1.268 | −123.684 | −442.762 | 10.205 | 11.786 |
| Antisaccade | 0.940 | 0.658 | 0.703 | 0.883 | 1.268 | 0.027 | −1.399 | −3.544 | 0.093 | 0.105 |
| Flanker | −77.752 | −59.711 | −71.974 | −111.187 | −123.684 | −1.399 | 1,964.462 | 406.326 | −11.987 | −9.202 |
| Stroop | −453.431 | −164.515 | −173.089 | −265.489 | −442.762 | −3.544 | 406.326 | 9,635.449 | −24.909 | −26.159 |
| VAorient_k | 8.278 | 6.248 | 6.308 | 9.318 | 10.205 | 0.093 | −11.987 | −24.909 | 2.225 | 1.116 |
| VAorient_S_k | 8.608 | 6.034 | 6.398 | 8.560 | 11.786 | 0.105 | −9.202 | −26.159 | 1.116 | 1.684 |
∑observed = ∑model + ∑residual
Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix
You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)
lavaan::cfa()
| OSpan | SymSpan | RotSpan | RunSpatial | RunDigit | Antisaccade | Flanker | Stroop | VAorient_k | VAorient_S_k | |
|---|---|---|---|---|---|---|---|---|---|---|
| OSpan | 235.263 | 75.042 | 78.716 | 91.570 | 154.288 | 0.940 | −77.752 | −453.431 | 8.278 | 8.608 |
| SymSpan | 75.042 | 82.010 | 60.840 | 62.972 | 76.208 | 0.658 | −59.711 | −164.515 | 6.248 | 6.034 |
| RotSpan | 78.716 | 60.840 | 96.142 | 66.639 | 92.675 | 0.703 | −71.974 | −173.089 | 6.308 | 6.398 |
| RunSpatial | 91.570 | 62.972 | 66.639 | 127.428 | 121.168 | 0.883 | −111.187 | −265.489 | 9.318 | 8.560 |
| RunDigit | 154.288 | 76.208 | 92.675 | 121.168 | 374.828 | 1.268 | −123.684 | −442.762 | 10.205 | 11.786 |
| Antisaccade | 0.940 | 0.658 | 0.703 | 0.883 | 1.268 | 0.027 | −1.399 | −3.544 | 0.093 | 0.105 |
| Flanker | −77.752 | −59.711 | −71.974 | −111.187 | −123.684 | −1.399 | 1,964.462 | 406.326 | −11.987 | −9.202 |
| Stroop | −453.431 | −164.515 | −173.089 | −265.489 | −442.762 | −3.544 | 406.326 | 9,635.449 | −24.909 | −26.159 |
| VAorient_k | 8.278 | 6.248 | 6.308 | 9.318 | 10.205 | 0.093 | −11.987 | −24.909 | 2.225 | 1.116 |
| VAorient_S_k | 8.608 | 6.034 | 6.398 | 8.560 | 11.786 | 0.105 | −9.202 | −26.159 | 1.116 | 1.684 |
∑observed = ∑model + ∑residual
Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix
You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)
lavaan::cfa()
The model syntax contains formula types enclosed in single brackets
f1 =~ ind1 + ind2 + ind3lavaan::cfa()
Fit the model with cfa()
Specify the model syntax object, the data, and additional arguments
missing = "fiml" — uses full information maximum likelihood. This is the best method for dealing with missing data
std.ov = TRUE — standardizes the observed (indicator) variables before running the model (i.e., uses a correlation matrix instead of covariance matrix)
lavaan::cfa()
lavaan 0.6-19 ended normally after 34 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 34
Number of observations 568
Number of missing patterns 10
Model Test User Model:
Test statistic 107.514
Degrees of freedom 31
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 2163.395
Degrees of freedom 45
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.964
Tucker-Lewis Index (TLI) 0.948
Robust Comparative Fit Index (CFI) 0.964
Robust Tucker-Lewis Index (TLI) 0.947
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -6986.895
Loglikelihood unrestricted model (H1) -6933.138
Akaike (AIC) 14041.791
Bayesian (BIC) 14189.423
Sample-size adjusted Bayesian (SABIC) 14081.489
Root Mean Square Error of Approximation:
RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: RMSEA <= 0.050 0.026
P-value H_0: RMSEA >= 0.080 0.047
Robust RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: Robust RMSEA <= 0.050 0.023
P-value H_0: Robust RMSEA >= 0.080 0.055
Standardized Root Mean Square Residual:
SRMR 0.030
Parameter Estimates:
Standard errors Standard
Information Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC =~
OSpan 1.000 0.682 0.682
SymSpan 1.142 0.070 16.321 0.000 0.779 0.780
RotSpan 1.141 0.070 16.270 0.000 0.778 0.779
RunSpatial 1.185 0.071 16.675 0.000 0.809 0.810
RunDigit 0.963 0.068 14.104 0.000 0.657 0.656
AC =~
Antisaccade 1.000 0.698 0.699
Flanker -0.377 0.071 -5.336 0.000 -0.263 -0.264
Stroop -0.465 0.073 -6.417 0.000 -0.325 -0.325
VA_ns =~
VAorient_k 1.000 0.999 1.000
VA_s =~
VAorient_S_k 1.000 0.999 1.000
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC ~~
AC 0.399 0.039 10.167 0.000 0.838 0.838
VA_ns 0.406 0.040 10.270 0.000 0.596 0.596
VA_s 0.462 0.042 11.032 0.000 0.677 0.677
AC ~~
VA_ns 0.388 0.044 8.818 0.000 0.556 0.556
VA_s 0.486 0.047 10.441 0.000 0.696 0.696
VA_ns ~~
VA_s 0.575 0.048 11.903 0.000 0.577 0.577
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan -0.006 0.042 -0.134 0.894 -0.006 -0.006
.SymSpan -0.001 0.042 -0.036 0.972 -0.001 -0.001
.RotSpan 0.001 0.042 0.017 0.986 0.001 0.001
.RunSpatial -0.000 0.042 -0.009 0.993 -0.000 -0.000
.RunDigit 0.006 0.042 0.142 0.887 0.006 0.006
.Antisaccade -0.001 0.042 -0.025 0.980 -0.001 -0.001
.Flanker 0.002 0.042 0.053 0.958 0.002 0.002
.Stroop 0.001 0.042 0.013 0.990 0.001 0.001
.VAorient_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
.VAorient_S_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan 0.536 0.036 14.906 0.000 0.536 0.535
.SymSpan 0.390 0.029 13.261 0.000 0.390 0.391
.RotSpan 0.393 0.030 13.295 0.000 0.393 0.394
.RunSpatial 0.343 0.027 12.559 0.000 0.343 0.344
.RunDigit 0.570 0.038 15.056 0.000 0.570 0.569
.Antisaccade 0.511 0.067 7.674 0.000 0.511 0.512
.Flanker 0.929 0.057 16.313 0.000 0.929 0.931
.Stroop 0.893 0.055 16.178 0.000 0.893 0.894
.VAorient_k 0.000 0.000 0.000
.VAorient_S_k 0.000 0.000 0.000
WMC 0.465 0.053 8.764 0.000 1.000 1.000
AC 0.488 0.078 6.248 0.000 1.000 1.000
VA_ns 0.998 0.059 16.852 0.000 1.000 1.000
VA_s 0.998 0.059 16.852 0.000 1.000 1.000
summary()
fit.measures = TRUE — Outputs measures to assess the fit of the modelstandardized = TRUE — Outputs standardized model parameterslavaan::cfa()
lavaan 0.6-19 ended normally after 34 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 34
Number of observations 568
Number of missing patterns 10
Model Test User Model:
Test statistic 107.514
Degrees of freedom 31
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 2163.395
Degrees of freedom 45
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.964
Tucker-Lewis Index (TLI) 0.948
Robust Comparative Fit Index (CFI) 0.964
Robust Tucker-Lewis Index (TLI) 0.947
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -6986.895
Loglikelihood unrestricted model (H1) -6933.138
Akaike (AIC) 14041.791
Bayesian (BIC) 14189.423
Sample-size adjusted Bayesian (SABIC) 14081.489
Root Mean Square Error of Approximation:
RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: RMSEA <= 0.050 0.026
P-value H_0: RMSEA >= 0.080 0.047
Robust RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: Robust RMSEA <= 0.050 0.023
P-value H_0: Robust RMSEA >= 0.080 0.055
Standardized Root Mean Square Residual:
SRMR 0.030
Parameter Estimates:
Standard errors Standard
Information Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC =~
OSpan 1.000 0.682 0.682
SymSpan 1.142 0.070 16.321 0.000 0.779 0.780
RotSpan 1.141 0.070 16.270 0.000 0.778 0.779
RunSpatial 1.185 0.071 16.675 0.000 0.809 0.810
RunDigit 0.963 0.068 14.104 0.000 0.657 0.656
AC =~
Antisaccade 1.000 0.698 0.699
Flanker -0.377 0.071 -5.336 0.000 -0.263 -0.264
Stroop -0.465 0.073 -6.417 0.000 -0.325 -0.325
VA_ns =~
VAorient_k 1.000 0.999 1.000
VA_s =~
VAorient_S_k 1.000 0.999 1.000
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC ~~
AC 0.399 0.039 10.167 0.000 0.838 0.838
VA_ns 0.406 0.040 10.270 0.000 0.596 0.596
VA_s 0.462 0.042 11.032 0.000 0.677 0.677
AC ~~
VA_ns 0.388 0.044 8.818 0.000 0.556 0.556
VA_s 0.486 0.047 10.441 0.000 0.696 0.696
VA_ns ~~
VA_s 0.575 0.048 11.903 0.000 0.577 0.577
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan -0.006 0.042 -0.134 0.894 -0.006 -0.006
.SymSpan -0.001 0.042 -0.036 0.972 -0.001 -0.001
.RotSpan 0.001 0.042 0.017 0.986 0.001 0.001
.RunSpatial -0.000 0.042 -0.009 0.993 -0.000 -0.000
.RunDigit 0.006 0.042 0.142 0.887 0.006 0.006
.Antisaccade -0.001 0.042 -0.025 0.980 -0.001 -0.001
.Flanker 0.002 0.042 0.053 0.958 0.002 0.002
.Stroop 0.001 0.042 0.013 0.990 0.001 0.001
.VAorient_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
.VAorient_S_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan 0.536 0.036 14.906 0.000 0.536 0.535
.SymSpan 0.390 0.029 13.261 0.000 0.390 0.391
.RotSpan 0.393 0.030 13.295 0.000 0.393 0.394
.RunSpatial 0.343 0.027 12.559 0.000 0.343 0.344
.RunDigit 0.570 0.038 15.056 0.000 0.570 0.569
.Antisaccade 0.511 0.067 7.674 0.000 0.511 0.512
.Flanker 0.929 0.057 16.313 0.000 0.929 0.931
.Stroop 0.893 0.055 16.178 0.000 0.893 0.894
.VAorient_k 0.000 0.000 0.000
.VAorient_S_k 0.000 0.000 0.000
WMC 0.465 0.053 8.764 0.000 1.000 1.000
AC 0.488 0.078 6.248 0.000 1.000 1.000
VA_ns 0.998 0.059 16.852 0.000 1.000 1.000
VA_s 0.998 0.059 16.852 0.000 1.000 1.000
lavaan::cfa()
OSpan SymSpn RotSpn RnSptl RunDgt Antscc Flankr Stroop VArnt_
OSpan 0.000
SymSpan 0.008 0.000
RotSpan 0.000 0.075 0.000
RunSpatial -0.022 -0.018 -0.029 0.000
RunDigit 0.076 -0.074 -0.020 0.025 0.000
Antisaccade -0.021 -0.011 -0.015 0.007 0.026 0.000
Flanker 0.040 0.024 0.006 -0.044 -0.004 -0.009 0.000
Stroop -0.117 0.029 0.032 -0.018 -0.054 0.009 0.010 0.000
VAorient_k -0.043 -0.002 -0.033 0.070 -0.037 -0.005 -0.040 0.011 0.000
VAorient_S_k -0.029 -0.017 -0.023 0.035 0.028 0.010 0.023 0.022 0.000
VAr_S_
OSpan
SymSpan
RotSpan
RunSpatial
RunDigit
Antisaccade
Flanker
Stroop
VAorient_k
VAorient_S_k 0.000
∑observed = ∑model + ∑residual
Model fit is assessed by how closely our model reproduces (or explains) the observed variance covariance matrix
You need to balance parsimony (a simpler model with fewer parameter estimates) and adequate model fit (a more complex model with theoretically irrelevant parameters)
lavaan::cfa()
lavaan 0.6-19 ended normally after 34 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 34
Number of observations 568
Number of missing patterns 10
Model Test User Model:
Test statistic 107.514
Degrees of freedom 31
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 2163.395
Degrees of freedom 45
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.964
Tucker-Lewis Index (TLI) 0.948
Robust Comparative Fit Index (CFI) 0.964
Robust Tucker-Lewis Index (TLI) 0.947
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -6986.895
Loglikelihood unrestricted model (H1) -6933.138
Akaike (AIC) 14041.791
Bayesian (BIC) 14189.423
Sample-size adjusted Bayesian (SABIC) 14081.489
Root Mean Square Error of Approximation:
RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: RMSEA <= 0.050 0.026
P-value H_0: RMSEA >= 0.080 0.047
Robust RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: Robust RMSEA <= 0.050 0.023
P-value H_0: Robust RMSEA >= 0.080 0.055
Standardized Root Mean Square Residual:
SRMR 0.030
Parameter Estimates:
Standard errors Standard
Information Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC =~
OSpan 1.000 0.682 0.682
SymSpan 1.142 0.070 16.321 0.000 0.779 0.780
RotSpan 1.141 0.070 16.270 0.000 0.778 0.779
RunSpatial 1.185 0.071 16.675 0.000 0.809 0.810
RunDigit 0.963 0.068 14.104 0.000 0.657 0.656
AC =~
Antisaccade 1.000 0.698 0.699
Flanker -0.377 0.071 -5.336 0.000 -0.263 -0.264
Stroop -0.465 0.073 -6.417 0.000 -0.325 -0.325
VA_ns =~
VAorient_k 1.000 0.999 1.000
VA_s =~
VAorient_S_k 1.000 0.999 1.000
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC ~~
AC 0.399 0.039 10.167 0.000 0.838 0.838
VA_ns 0.406 0.040 10.270 0.000 0.596 0.596
VA_s 0.462 0.042 11.032 0.000 0.677 0.677
AC ~~
VA_ns 0.388 0.044 8.818 0.000 0.556 0.556
VA_s 0.486 0.047 10.441 0.000 0.696 0.696
VA_ns ~~
VA_s 0.575 0.048 11.903 0.000 0.577 0.577
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan -0.006 0.042 -0.134 0.894 -0.006 -0.006
.SymSpan -0.001 0.042 -0.036 0.972 -0.001 -0.001
.RotSpan 0.001 0.042 0.017 0.986 0.001 0.001
.RunSpatial -0.000 0.042 -0.009 0.993 -0.000 -0.000
.RunDigit 0.006 0.042 0.142 0.887 0.006 0.006
.Antisaccade -0.001 0.042 -0.025 0.980 -0.001 -0.001
.Flanker 0.002 0.042 0.053 0.958 0.002 0.002
.Stroop 0.001 0.042 0.013 0.990 0.001 0.001
.VAorient_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
.VAorient_S_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan 0.536 0.036 14.906 0.000 0.536 0.535
.SymSpan 0.390 0.029 13.261 0.000 0.390 0.391
.RotSpan 0.393 0.030 13.295 0.000 0.393 0.394
.RunSpatial 0.343 0.027 12.559 0.000 0.343 0.344
.RunDigit 0.570 0.038 15.056 0.000 0.570 0.569
.Antisaccade 0.511 0.067 7.674 0.000 0.511 0.512
.Flanker 0.929 0.057 16.313 0.000 0.929 0.931
.Stroop 0.893 0.055 16.178 0.000 0.893 0.894
.VAorient_k 0.000 0.000 0.000
.VAorient_S_k 0.000 0.000 0.000
WMC 0.465 0.053 8.764 0.000 1.000 1.000
AC 0.488 0.078 6.248 0.000 1.000 1.000
VA_ns 0.998 0.059 16.852 0.000 1.000 1.000
VA_s 0.998 0.059 16.852 0.000 1.000 1.000
Standardized loading can be found in Std.all column and should be:
Statistically significant, p < .05
Medium to large in size (standardized loading), > .30
Fairly balanced across the factor
lavaan::cfa()
lavaan 0.6-19 ended normally after 34 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 34
Number of observations 568
Number of missing patterns 10
Model Test User Model:
Test statistic 107.514
Degrees of freedom 31
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 2163.395
Degrees of freedom 45
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.964
Tucker-Lewis Index (TLI) 0.948
Robust Comparative Fit Index (CFI) 0.964
Robust Tucker-Lewis Index (TLI) 0.947
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -6986.895
Loglikelihood unrestricted model (H1) -6933.138
Akaike (AIC) 14041.791
Bayesian (BIC) 14189.423
Sample-size adjusted Bayesian (SABIC) 14081.489
Root Mean Square Error of Approximation:
RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: RMSEA <= 0.050 0.026
P-value H_0: RMSEA >= 0.080 0.047
Robust RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: Robust RMSEA <= 0.050 0.023
P-value H_0: Robust RMSEA >= 0.080 0.055
Standardized Root Mean Square Residual:
SRMR 0.030
Parameter Estimates:
Standard errors Standard
Information Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC =~
OSpan 1.000 0.682 0.682
SymSpan 1.142 0.070 16.321 0.000 0.779 0.780
RotSpan 1.141 0.070 16.270 0.000 0.778 0.779
RunSpatial 1.185 0.071 16.675 0.000 0.809 0.810
RunDigit 0.963 0.068 14.104 0.000 0.657 0.656
AC =~
Antisaccade 1.000 0.698 0.699
Flanker -0.377 0.071 -5.336 0.000 -0.263 -0.264
Stroop -0.465 0.073 -6.417 0.000 -0.325 -0.325
VA_ns =~
VAorient_k 1.000 0.999 1.000
VA_s =~
VAorient_S_k 1.000 0.999 1.000
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC ~~
AC 0.399 0.039 10.167 0.000 0.838 0.838
VA_ns 0.406 0.040 10.270 0.000 0.596 0.596
VA_s 0.462 0.042 11.032 0.000 0.677 0.677
AC ~~
VA_ns 0.388 0.044 8.818 0.000 0.556 0.556
VA_s 0.486 0.047 10.441 0.000 0.696 0.696
VA_ns ~~
VA_s 0.575 0.048 11.903 0.000 0.577 0.577
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan -0.006 0.042 -0.134 0.894 -0.006 -0.006
.SymSpan -0.001 0.042 -0.036 0.972 -0.001 -0.001
.RotSpan 0.001 0.042 0.017 0.986 0.001 0.001
.RunSpatial -0.000 0.042 -0.009 0.993 -0.000 -0.000
.RunDigit 0.006 0.042 0.142 0.887 0.006 0.006
.Antisaccade -0.001 0.042 -0.025 0.980 -0.001 -0.001
.Flanker 0.002 0.042 0.053 0.958 0.002 0.002
.Stroop 0.001 0.042 0.013 0.990 0.001 0.001
.VAorient_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
.VAorient_S_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan 0.536 0.036 14.906 0.000 0.536 0.535
.SymSpan 0.390 0.029 13.261 0.000 0.390 0.391
.RotSpan 0.393 0.030 13.295 0.000 0.393 0.394
.RunSpatial 0.343 0.027 12.559 0.000 0.343 0.344
.RunDigit 0.570 0.038 15.056 0.000 0.570 0.569
.Antisaccade 0.511 0.067 7.674 0.000 0.511 0.512
.Flanker 0.929 0.057 16.313 0.000 0.929 0.931
.Stroop 0.893 0.055 16.178 0.000 0.893 0.894
.VAorient_k 0.000 0.000 0.000
.VAorient_S_k 0.000 0.000 0.000
WMC 0.465 0.053 8.764 0.000 1.000 1.000
AC 0.488 0.078 6.248 0.000 1.000 1.000
VA_ns 0.998 0.059 16.852 0.000 1.000 1.000
VA_s 0.998 0.059 16.852 0.000 1.000 1.000
lavaan::cfa()
semoutput::sem_tables(fit)| Model Significance | |||
| N | χ2 | df | p |
|---|---|---|---|
| 568 | 107.514 | 31 | <0.001 |
| Model Fit | ||||||
| CFI | RMSEA | 90% CI | TLI | SRMR | AIC | BIC |
|---|---|---|---|---|---|---|
| 0.964 | 0.066 | 0.053 — 0.080 | 0.948 | 0.030 | 14041.791 | 14189.423 |
| Factor Loadings | |||||||
| Latent Factor | Indicator |
Standardized
|
|||||
|---|---|---|---|---|---|---|---|
| Loading | 95% CI | sig | SE | z | p | ||
| AC | Antisaccade | 0.699 | 0.606 — 0.792 | *** | 0.048 | 14.699 | 0.000 |
| AC | Flanker | −0.264 | −0.354 — −0.173 | *** | 0.046 | −5.681 | <0.001 |
| AC | Stroop | −0.325 | −0.412 — −0.238 | *** | 0.044 | −7.339 | <0.001 |
| VA_ns | VAorient_k | 1.000 | 1.000 — 1.000 | 0.000 | |||
| VA_s | VAorient_S_k | 1.000 | 1.000 — 1.000 | 0.000 | |||
| WMC | OSpan | 0.682 | 0.632 — 0.732 | *** | 0.026 | 26.608 | 0.000 |
| WMC | RotSpan | 0.779 | 0.739 — 0.818 | *** | 0.020 | 38.477 | 0.000 |
| WMC | RunDigit | 0.656 | 0.603 — 0.710 | *** | 0.027 | 24.136 | 0.000 |
| WMC | RunSpatial | 0.810 | 0.774 — 0.846 | *** | 0.018 | 44.163 | 0.000 |
| WMC | SymSpan | 0.780 | 0.741 — 0.820 | *** | 0.020 | 38.781 | 0.000 |
| * p < .05; ** p < .01; *** p < .001 | |||||||
| Latent Factor Correlations | ||||||
| Factor | Factor | r | 95% CI | sig | SE | p |
|---|---|---|---|---|---|---|
| WMC | AC | 0.838 | 0.728 — 0.948 | *** | 0.056 | 0.000 |
| WMC | VA_ns | 0.596 | 0.536 — 0.655 | *** | 0.030 | 0.000 |
| WMC | VA_s | 0.677 | 0.626 — 0.728 | *** | 0.026 | 0.000 |
| AC | VA_ns | 0.556 | 0.451 — 0.661 | *** | 0.054 | 0.000 |
| AC | VA_s | 0.696 | 0.597 — 0.795 | *** | 0.051 | 0.000 |
| VA_ns | VA_s | 0.577 | 0.522 — 0.631 | *** | 0.028 | 0.000 |
| * p < .05; ** p < .01; *** p < .001 | ||||||
| Latent Factor Variance/Residual Variance | ||||
| Factor | Variance | Std. Variance | sig | p |
|---|---|---|---|---|
| WMC | 0.465 | 1.000 | *** | 0.000 |
| AC | 0.488 | 1.000 | *** | <0.001 |
| VA_ns | 0.998 | 1.000 | *** | 0.000 |
| VA_s | 0.998 | 1.000 | *** | 0.000 |
Data Set 3 (N = 568)
The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance (WMC) vs. attention control processes (AC).
Data Set 3 (N = 568)
What is the unique contribution of working memory capacity and attention control to variability in non-selective and selective visual arrays?
Differences from a CFA:
Similar to correlation vs. multiple regression
Partitions unique sources of variance
Directional paths (⟹) instead of bi-directional paths (⟷)
Residual variance terms for dependent variables
model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop
WMC ~~ 1*WMC
AC ~~ 1*AC
# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'
fit <- sem(model, data, missing = "fiml", std.ov = TRUE)It is recommended to set:
NA*WMC ~~ 1*WMC
model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop
WMC ~~ 1*WMC
AC ~~ 1*AC
# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'
fit <- sem(model, data, missing = "fiml", std.ov = TRUE)Model syntax formula types
NA* Freely estimate loading — default in sem() is to set first factor loading to 1~~ Set a variance or co-variance component~ Regression formula
lavaan 0.6-19 ended normally after 61 iterations
Estimator ML
Optimization method NLMINB
Number of model parameters 34
Number of observations 568
Number of missing patterns 10
Model Test User Model:
Test statistic 107.514
Degrees of freedom 31
P-value (Chi-square) 0.000
Model Test Baseline Model:
Test statistic 2163.395
Degrees of freedom 45
P-value 0.000
User Model versus Baseline Model:
Comparative Fit Index (CFI) 0.964
Tucker-Lewis Index (TLI) 0.948
Robust Comparative Fit Index (CFI) 0.964
Robust Tucker-Lewis Index (TLI) 0.947
Loglikelihood and Information Criteria:
Loglikelihood user model (H0) -6986.895
Loglikelihood unrestricted model (H1) -6933.138
Akaike (AIC) 14041.791
Bayesian (BIC) 14189.423
Sample-size adjusted Bayesian (SABIC) 14081.489
Root Mean Square Error of Approximation:
RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: RMSEA <= 0.050 0.026
P-value H_0: RMSEA >= 0.080 0.047
Robust RMSEA 0.066
90 Percent confidence interval - lower 0.053
90 Percent confidence interval - upper 0.080
P-value H_0: Robust RMSEA <= 0.050 0.023
P-value H_0: Robust RMSEA >= 0.080 0.055
Standardized Root Mean Square Residual:
SRMR 0.030
Parameter Estimates:
Standard errors Standard
Information Observed
Observed information based on Hessian
Latent Variables:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC =~
OSpan 0.682 0.039 17.527 0.000 0.682 0.682
SymSpan 0.779 0.037 21.149 0.000 0.779 0.780
RotSpan 0.778 0.037 21.059 0.000 0.778 0.779
RunSpatial 0.809 0.036 22.365 0.000 0.809 0.810
RunDigit 0.657 0.040 16.596 0.000 0.657 0.656
AC =~
Antisaccade 0.698 0.056 12.495 0.000 0.698 0.699
Flanker -0.263 0.048 -5.460 0.000 -0.263 -0.264
Stroop -0.325 0.047 -6.897 0.000 -0.325 -0.325
VA_ns =~
VAorient_k 1.000 0.999 1.000
VA_s =~
VAorient_S_k 1.000 0.999 1.000
Regressions:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
VA_ns ~
WMC 0.436 0.133 3.272 0.001 0.436 0.436
AC 0.190 0.143 1.324 0.185 0.190 0.190
VA_s ~
WMC 0.315 0.167 1.891 0.059 0.315 0.315
AC 0.431 0.173 2.500 0.012 0.432 0.432
Covariances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC ~~
AC 0.838 0.056 14.972 0.000 0.838 0.838
.VA_ns ~~
.VA_s 0.148 0.031 4.764 0.000 0.268 0.268
Intercepts:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
.OSpan -0.006 0.042 -0.134 0.894 -0.006 -0.006
.SymSpan -0.001 0.042 -0.036 0.972 -0.001 -0.001
.RotSpan 0.001 0.042 0.017 0.986 0.001 0.001
.RunSpatial -0.000 0.042 -0.009 0.993 -0.000 -0.000
.RunDigit 0.006 0.042 0.142 0.887 0.006 0.006
.Antisaccade -0.001 0.042 -0.025 0.980 -0.001 -0.001
.Flanker 0.002 0.042 0.053 0.958 0.002 0.002
.Stroop 0.001 0.042 0.013 0.990 0.001 0.001
.VAorient_k 0.000 0.042 0.000 1.000 0.000 0.000
.VAorient_S_k -0.000 0.042 -0.000 1.000 -0.000 -0.000
Variances:
Estimate Std.Err z-value P(>|z|) Std.lv Std.all
WMC 1.000 1.000 1.000
AC 1.000 1.000 1.000
.OSpan 0.536 0.036 14.906 0.000 0.536 0.535
.SymSpan 0.390 0.029 13.261 0.000 0.390 0.391
.RotSpan 0.393 0.030 13.295 0.000 0.393 0.394
.RunSpatial 0.343 0.027 12.559 0.000 0.343 0.344
.RunDigit 0.570 0.038 15.056 0.000 0.570 0.569
.Antisaccade 0.511 0.067 7.674 0.000 0.511 0.512
.Flanker 0.929 0.057 16.313 0.000 0.929 0.931
.Stroop 0.893 0.055 16.178 0.000 0.893 0.894
.VAorient_k 0.000 0.000 0.000
.VAorient_S_k 0.000 0.000 0.000
.VA_ns 0.633 0.041 15.295 0.000 0.635 0.635
.VA_s 0.485 0.042 11.443 0.000 0.486 0.486
Path values can be found in the Regression section
| Model Significance | |||
| N | χ2 | df | p |
|---|---|---|---|
| 568 | 107.514 | 31 | <0.001 |
| Model Fit | ||||||
| CFI | RMSEA | 90% CI | TLI | SRMR | AIC | BIC |
|---|---|---|---|---|---|---|
| 0.964 | 0.066 | 0.053 — 0.080 | 0.948 | 0.030 | 14041.791 | 14189.423 |
| Factor Loadings | |||||||
| Latent Factor | Indicator |
Standardized
|
|||||
|---|---|---|---|---|---|---|---|
| Loading | 95% CI | sig | SE | z | p | ||
| AC | Antisaccade | 0.699 | 0.606 — 0.792 | *** | 0.048 | 14.699 | 0.000 |
| AC | Flanker | −0.264 | −0.354 — −0.173 | *** | 0.046 | −5.681 | <0.001 |
| AC | Stroop | −0.325 | −0.412 — −0.238 | *** | 0.044 | −7.339 | <0.001 |
| VA_ns | VAorient_k | 1.000 | 1.000 — 1.000 | 0.000 | |||
| VA_s | VAorient_S_k | 1.000 | 1.000 — 1.000 | 0.000 | |||
| WMC | OSpan | 0.682 | 0.632 — 0.732 | *** | 0.026 | 26.608 | 0.000 |
| WMC | RotSpan | 0.779 | 0.739 — 0.818 | *** | 0.020 | 38.477 | 0.000 |
| WMC | RunDigit | 0.656 | 0.603 — 0.710 | *** | 0.027 | 24.136 | 0.000 |
| WMC | RunSpatial | 0.810 | 0.774 — 0.846 | *** | 0.018 | 44.163 | 0.000 |
| WMC | SymSpan | 0.780 | 0.741 — 0.820 | *** | 0.020 | 38.781 | 0.000 |
| * p < .05; ** p < .01; *** p < .001 | |||||||
| Regression Paths | |||||||
| Predictor | DV |
Standardized
|
|||||
|---|---|---|---|---|---|---|---|
| β | 95% CI | sig | SE | z | p | ||
| AC | VA_ns | 0.190 | −0.091 — 0.471 | 0.143 | 1.327 | 0.185 | |
| WMC | VA_ns | 0.436 | 0.178 — 0.695 | *** | 0.132 | 3.307 | <0.001 |
| AC | VA_s | 0.432 | 0.095 — 0.768 | * | 0.172 | 2.513 | 0.012 |
| WMC | VA_s | 0.315 | −0.011 — 0.641 | 0.166 | 1.897 | 0.058 | |
| * p < .05; ** p < .01; *** p < .001 | |||||||
| Latent Factor Correlations | ||||||
| Factor | Factor | r | 95% CI | sig | SE | p |
|---|---|---|---|---|---|---|
| WMC | AC | 0.838 | 0.728 — 0.948 | *** | 0.056 | 0.000 |
| VA_ns | VA_s | 0.268 | 0.175 — 0.361 | *** | 0.047 | <0.001 |
| * p < .05; ** p < .01; *** p < .001 | ||||||
| Latent Factor Variance/Residual Variance | ||||
| Factor | Variance | Std. Variance | sig | p |
|---|---|---|---|---|
| VA_ns | 0.633 | 0.635 | *** | 0.000 |
| VA_s | 0.485 | 0.486 | *** | 0.000 |
| Explained Variance | |
| Variable | R2 |
|---|---|
| VA_ns | 0.365 |
| VA_s | 0.514 |
The extent to which individual differences in visual arrays performance reflects attention control processes depends on the nature of the task
Non-selective visual arrays reflects individual differences in working memory capacity, more so than attention control
Selective visual arrays reflects individual differences in attention control, more so than working memory capacity
Create latent factors
Factor1 =~ Task1 + Task2 + Task3
Factor2 =~ Task4 + Task5 + Task6
Create single-indicator factors
Factor3 =~ 1*Task7
Factors are correlated by default, but to manually specify
Factor1 ~~ Factor2
Factor1 ~~ Factor3
Factor2 ~~ Factor3
Fit the model
fit <- cfa(model, data, missing = "fiml", std.ov = TRUE)
Get output
summary(fit, fit.measures = TRUE, standardized = TRUE)
or
sem_tables(fit)
Evaluate model fit
Get output
summary(fit, fit.measures = TRUE, standardized = TRUE)
or
sem_tables(fit)
Evaluate loadings
Statistically significant, p < .05
Medium to large in size (standardized loading), > .30
Fairly balanced across the factor
Evaluate factor correlations
Copy CFA model syntax
Set predictor factors variance to 1
Factor1 =~ NA*Task1 + Task2 + Task3
Factor1 ~~ 1*Factor1
Define regression paths
dv ~ Factor1 + Factor 2
Fit the model
fit <- sem(model, data, missing = "fiml", std.ov = TRUE)
model <- '
# latent factors
WMC =~ NA*OSpan + SymSpan + RotSpan + RunSpatial + RunDigit
AC =~ NA*Antisaccade + Flanker + Stroop
WMC ~~ 1*WMC
AC ~~ 1*AC
# single-indicator factors
VA_ns =~ 1*VAorient_k
VA_s =~ 1*VAorient_S_k
# regression paths
VA_ns ~ WMC + AC
VA_s ~ WMC + AC
'
fit <- sem(model, data, missing = "fiml", std.ov = TRUE)
Get output
summary(fit, fit.measures = TRUE, standardized = TRUE)
or
sem_tables(fit)
Evaluate model fit
Evaluate regression paths
Evaluate latent and residual factor correlations
[image]
Standard multiple regression or hierarchical regression
Multiple predictor variables, One dependent variable
Type of research question:
Does variable x1 account for unique variance in variable y1, after accounting for variable x2?
What is the unique contribution of variables x1 and x2 to variance in variable y1?
Data Set 3 (N = 568)
The purpose of this study was to evaluate the extent to which selective and non-selective visual arrays tasks reflect working memory storage and maintenance vs. attention control processes.
Data Set 3 (N = 568)
What is the unique contribution of working memory capacity and attention control to variability in non-selective and selective visual arrays?
[image]
One or more predictor variables, Two or more dependent variable
Type of research question:
Does variable x1 account for the correlation between variables y1 and y2?
Is variable x1 a common source of variance between variables y1 and y2?
Common cause model
One or more predictor variables, one or more mediators, and one or more dependent variables
Type of research question:
Does variable m1 mediate the correlation between variables x1 and y1?
Does variable m1 account for part of the correlation between variables x1 and y1?
Very similar to common cause model but can give you some additional information
A precise statistical test of whether the mediator partially explains the co-variance between two variables
Can make claims about full or just partial mediation
Mediation model